home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Gold Collection
/
Software Vault - The Gold Collection (American Databankers) (1993).ISO
/
cdr25
/
pmseek43.zip
/
PMSEEK.DOC
next >
Wrap
Text File
|
1991-01-03
|
22KB
|
361 lines
*** PMSEEK Version 4.30 ***
A File & Text Search Utility for OS/2 Presentation Manager
Description:
--------------------------------------------------------------------------
PMSEEK allows you to search one or more disks (including NET drives on a
LAN) for files or text. Any matches found can be browsed, edited, or
executed, by double clicking on the filename. You can also (starting with
v2.00) execute commands (Copy, Erase, etc) against multiple found files.
The Command feature makes PMSEEK a much more useful general-purpose file
utility. Text search capability was added in version 4.00 (for OS/2 1.2
and above only).
Searching for Filenames:
-------------------------------------------------------------------------
PMSEEK is very flexible in the kinds of filename searches it allows. On
the main PMSEEK dialog screen you will be prompted to enter the filename
you wish to search for. You may specify the filename very exactly, or
you may use '*' as a wildcard character for flexible searches. The
following examples show the kinds of results you can expect from
particular searches:
C:*.EXE - lists all of the .EXE files on the C: drive
*:E.EXE - lists all occurences of E.EXE on every available drive
(including NET drives). This search could take awhile!
ACD:*.DOC - search drives A: C: and D: for all .DOC files.
P*K.EXE - list all .EXE files whose filenames start with P and
end with K
*.TXT - list all .TXT files found on the current default drive
TEMP* - lists all files with names matching TEMP*.* on the
default drive
TEMP - lists all files with names matching TEMP.* on the
default drive
D:\UTIL\*.EXE- lists all .EXE files contained in D:\UTIL or in any
subdirectories chained off D:\UTIL
Double-clicking on any filename that gets listed results in the
currently selected action (Browse, Edit, Execute, or Command) being
performed against that filename. Note that you can double click on a
filename even as the search for additional filenames continues... the
action will be performed, and the remainder of the search will continue
in the background. The Browse, Edit, Execute, and Command functions are
all run in separate OS/2 sessions independent of PMSEEK, courtesy of
OS/2 multi-tasking support. PMSEEK (starting with v2.00) uses a
"multiple selection" listbox. This means that more than one item can be
selected by single-clicking on multiple listbox items, then
double-clicking on the last item selected. Single-clicking on a
previously selected item will de- select it. If the action is Browse,
Edit, or Execute, only the first selected item will be acted on (the
rest will be de-selected after the current action starts). Multiple
selection only results in multiple actions for Command. If a future
release, I hope to disable multiple selection unless the Command radio
button is selected.
If you wish to do additional searches using the original dialog
screen, but do not wish to lose the earlier hit list, key in a new
search argument, and click on the 'NoClear' button, rather than on the
'Search' button... the original list of files found will not be
cleared, and any new files found will be inserted into the existing
list.
PMSEEK also has a SAVE button that allows saving of any search hits
to a file. Any saved hit lists will be written to C:\SEEKSAVE.FIL.
No way is currently provided to change the name of the SAVE file.
On the main PMSEEK window, PF3 will exit the application. On the
PMSEEK search dialog window, the Esc key will exit the dialog.
The tab key will move between dialog input fields.
Clicking on the CANCEL button during a search will abort the search.
This can be especially helpful during extremely long, multi-disk
searches (or mistakes ;-).
Searching for Text:
------------------------------------------------------------------------
Starting with version 4.00, PMSEEK includes text search capability. This
means that in addition to searching for filenames, you may also search for
specific text strings within the located files. If you do not wish to
search for text strings within the found files, simply do not enter
anything in the new "Enter Text to Search For" field and PMSEEK will
continue to merely search for filenames the way it did in the past.
All text searches are case-insensitive, meaning that PMSEEK makes no
distinction between "TEXT" and "text", for example, when looking for
matches. No special wild-cards are supported in the text search field.
If you enter more than one text search argument, for example, "net use",
PMSEEK will search for both words, but will not find a match unless they
occur together within the text being searched.
PMSEEK is able to perform fairly rapid text searches by using the
following techniques to enhance performance:
1) PMSEEK treats all files as if they were "binary" files and
reads them in 32K data blocks, then scans the 32K block
for a match. By using a relatively large blocksize, PMSEEK
reduces the number of individual disk I/O requests needed to
read the file into memory.
2) Once the 32K block has been read into memory, PMSEEK uses a
variation of the Boyer-Moore string search algorithm to search for a
match. Rather than simply doing a "brute-force" comparison, the B-M
algorithm uses a pre-built table of "mismatch" skip values. In a
pre-processing step, we decide for each possible character value that
could occur in the text, how many text characters to skip ahead if
that character were cause the mismatch. We then scan the search
argument with the text from right-to-left, and if a mismatch occurs,
we then skip N characters ahead in the text (based on the skip value
found for that character in the skip table). Use of this algorithm
(starting in v4.10) results in about a 40% improvement (average)
over the old linear search method.
Executing Commands against selected files:
------------------------------------------------------------------------
Starting with v1.50 of PMSEEK, you can execute commands (ie. Copy, Erase
Rename, etc) against files that you double-click on. On the main PMSEEK
dialog screen there is a new radio button labeled "Command". If you
select "Command" then double-click on a file, a second dialog window
will pop-up, prompting you to enter the command you wish to execute
against the selected file(s). If you typed 'Erase', for example, and then
clicked on the 'Enter' button, PMSEEK would then erase the selected file.
Normally PMSEEK executes commands by taking the command you entered,
appending the name of the selected file to the command string, then
executing the command string. However, for added flexibility, you may
specify exactly where PMSEEK is to append the filename by using the '/'
sign in the entered command. For example if you selected file
'C:\TMP\TEST.FIL', and entered the command 'COPY / C:\UTIL', PMSEEK
would then issue the command 'COPY C:\TMP\TEST.FIL C:\UTIL', substituting
the filename for the first occurence of the '/' sign in the command
string.
| Search Options:
| ------------------------------------------------------------------------
| Starting with PMSEEK v4.30, users can set several different search
| options. When the "Search SubDirs" option is checked, all subdirectories
| in the search path will be searched for the file. If it is not checked,
| only the subdirectory contained in the search argument will be searched.
| If the "Display Found Text" option is checked, any data found as part of
| a text search will be displayed above the entry showing the filename that
| the text was found in. If "Display Found Text is enabled, the search will
| be somewhat slower than when it is not enabled, because PMSEEK must search
| to the end of all qualifying files in order to find and display all
| occurances of the text within the files. If the "Ignore Case" option is
| checked, then any text searches will not be sensitive to upper/lower case.
|
| The default search options are to Search Subdirs, to ignore case, and to
| not display found text.
| Drag and Drop Support:
| ------------------------------------------------------------------------
| Starting with PMSEEK v4.20, you can mark (left single-click) a filename,
| press and hold the right mouse button, then release the button over an
| EPM, PMBROWSE, or FORBROWS window or icon. The selected file will then
| be loaded into an edit or browse window. If multiple filenames are
| marked, PMSEEK will only send the name of the first marked file to the
| "dropped-on" window. This restriction *may* be removed in a future
| release.
|
| Note that the right mouse button press is only recognized when the mouse
| pointer is in PMSEEK's client area. This means that PMSEEK will not
| recognize if you press the right mouse button within the "hits" listbox.
| PM seems to provide no way for applications to detect right-mouse-button
| from within a listbox.
|
| When PMSEEK realizes that you've pressed the right mouse button for drag
| and drop, the mouse pointer will change to indicate that drag-and-drop
| is active.
|
| PMSEEK's implementation of drag and drop uses the same conventions as
| the OS/2 File Manager for message passing, etc. At present, the only
| applications that are known to work with PMSEEK's drag and drop are
| EPM, PMBROWSE, and FORBROWS. You must have the appropriate versions of
| EPM, PMBROWSE, or FORBROWS for the drag and drop support to work... It
| is not likely to work with OfficeVision. PMSEEK can only be a
| "dropp-er"... not a "drop-ee" (ie. PMSEEK will not do anything useful
| if dropped-on from another application).
Installation:
------------------------------------------------------------------------
PMSEEK PACKAGE can be obtained from the OS2TOOLS disk. To install:
1) Load a copy of PMSEEK.EXE and PMSEEK.PRO to your disk.
| If you are using OS/2 release 1.1, load PMSEEK11.EXE
| instead of PMSEEK.EXE.
2) Edit the PMSEEK.PRO file to contain the correct names and paths of
your browse and edit programs. The sample PMSEEK.PRO file provided
with the PMSEEK package contains instructions and examples. Be
sure the PMSEEK.PRO is placed in a subdirectory that lies in your
DPATH.
3) To invoke PMSEEK, simply enter "PMSEEK" from a command-line window,
or install PMSEEK in your "Start Programs" menu.
4) You may perform an immediate search by starting PMSEEK with a search
parameter. For example, to start PMSEEK and have it immediately
begin searching for all .EXE files on drive C, type:
PMSEEK c:*.exe
from the OS/2 command prompt. If you wish to also perform a text
search upon invocation, you may include the optional text search
parm(s). For example to search all .EXE files on drive C: for
"IBM" you would enter:
PMSEEK c:*.exe ibm
The PMSEEK Defaults Profile
-------------------------------------------------------------------------
A profile is shipped as part of the PMSEEK package. PMSEEK reads the
profile to find out which browse and edit programs to use. The profile is
named PMSEEK.PRO. To find the profile, PMSEEK first looks for a copy in
your current directory, followed by a search of the directories listed in
your data path (DPATH), followed by a search of the directories in your
default path (PATH). You can find out which directories are in your DPATH
by typing "DPATH" from the OS/2 command line. If the profile is not
found, PMSEEK will try to use FVP.EXE as the Browse program, and E.EXE as
the edit program.
Implementation Notes:
------------------------------------------------------------------------
PMSEEK is not yet complete, but it has reached a point where it may still
prove useful to others. The most important missing features are:
- Lack of online Help. The only documentation currently available
is this file. However, the program is fairly easy to use.
PMSEEK Limitations:
------------------------------------------------------------------------
PMSEEK can only display 64K worth of information in the 'Files Found'
listbox. This is due to a Presentation Manager restriction on the
amount of data a listbox can hold.
| What's New in PMSEEK:
------------------------------------------------------------------------
10/26/89 - V1.00 - Initial public release.
11/02/89 - V1.10 - allow abort of search by clicking on CANCEL.
- allow passing search parm upon entry to PMSEEK.
- no longer "hogs" system... now checks msg queue during
search so that user can switch to other windows... ie
PMSEEK will now run in the background. V1.00 didn't.
- fixed possible file count bug.
- made the screens somewhat clearer.
- improved error messages.
11/06/89 - V1.20 - improved wildcard search capability. Earlier versions
could only support 'DOS-compatible' wild card searches
due to limitations in OS/2's DosFindFirst() function.
Leading asterisks, or asterisks imbedded within a
filename were not handled. V1.20 has a much more
general filename pattern-matching capability, akin to
GSEE.
11/06/89 - V1.21 - Cleaned up PMSEEK internal structure
11/07/89 - V1.22 - PMSEEK was not handling all wildcard patterns correctly
- Small performance improvements...loop tuning.
11/08/89 - V1.23 - If root subdirectory specified in searcharg, PMSEEK did
not correctly parse out the fn.ext from the path. It
does now.
11/09/89 - V1.30 - Improved doc in the AVAIL file
- drive now included in search status information
- if DPATH profile search fails, search PATH next before
issuing warning message.
- now restores original default drive following search.
- allows search arguments up to 79 characters long.
11/13/89 - V1.31 - small performance improvements, loop tuning.
11/14/89 - V1.40 - now allow explicit multi-disk searching. Specifying the
drive as *: will still search ALL drives, but you can now
request, for example, searching ACD: and only drives A:
C: and D: will be searched.
11/15/89 - V1.41 - v1.40 had an invalid pointer error that caused an abend.
- Improved handling of diskette/disk drive errors.
11/21/89 - V1.50 - now has a "command" radio button, allowing execution
of commands against the selected file, allowing users
to copy, rename, erase, etc, via PMSEEK.
- can now execute .CMD files (earlier releases would fail
if you tried). This works because we now start other
programs executing thru the OS/2 CMD interface.
- you can now specify .CMD files as your browse and edit
programs in PMSEEK.PRO. Earlier releases would fail if
browse and edit programs were not .EXE files. This new
feature allows sites to "front-end" the programs called
in PMSEEK.PRO.
11/22/89 - V2.00 - now allows selection of multiple listbox items.
- fixed v1.50 "System Cannot find drive or path" error
- no longer tabs to SAVE or CANCEL buttons (can arrow-key
to them still).
11/27/89 - V2.01 - v2.00 also "improved" PMSEEK.PRO handling. A bug caused
the edit program to not be executed properly. It's now
fixed.
11/27/89 - V2.02 - Earlier versions were failing to locate files with no .ext
- DosChDir() failure fixed when long subdir search was followed
by a search of shorter subdir.
12/05/89 - V2.03 - Versions 2.0x were not checking for interrupts (mouse clicks)
on the msg queue at the correct intervals. This sometimes
made it difficult (or impossible) to break out of a long
search. Now fixed.
12/08/89 - V2.10 - Versions 2.0x would try to execute something if there was a
double-click, but no list item was hilighted (something
that can happen because of multi-selection listboxes). We
now make sure that a listbox item was highlighted before
trying to execute anything at double-click time.
- Some PMSEEK.PRO files were not interpreted properly due
to a subtle strncpy error in ReadProfile() function.
- Browse program was being executed in background, due to
some test code that was inadvertently left in v2.0x.
Now runs Browse in foreground.
- Neatened up the dialog display a little
01/11/90 - v2.11 - WinDismissDlg() may have caused WINMANPM some problems...
now doing WinDestroyWindow() instead.
04/30/90 - v2.20 - Eliminated the main window, requiring less user interaction.
This also improves PMSEEK for users with VGA.
- Auto-minimize the application at startup
- Added an animated icon for amusement
05/01/90 - v2.21 - sets focus on the data entry field by default
05/04/90 - v3.00 - Major upgrade, for OS/2 release 1.2 users only!
- "Hits" listbox now uses mono-spaced fonts
- "Hits" display includes file date, time, size
- Dialog window width increased to accomodate extra listbox info
- "Hits" in list are sorted in date-descending order
05/07/90 - v3.10 - resizing of PMSEEK search dialog now supported
- listbox automatically resizes to fit dialog window to
allow users to display hits with long file names.
- / now supported (in addition to @) as substitution char
- MAXIMIZE keyword now supported in PMSEEK.PRO
05/18/90 - v3.11 - Entry field now maintains it's focus
- Listbox now maintains it's size better
05/29/90 - v3.12 - PMSEEK sometimes set focus unnecessarily
06/05/90 - v3.20 - PMSEEK no longer starts a separate session for each
command being executed. This speeds up command
execution and makes error detection more reliable.
- Now beeps after double-clicking on listbox item
- QUIET keyword in PMSEEK.PRO supported to disable beeping
07/13/90 - v4.00 - Text search capability added
- Version info moved to "About" box
- Prompt user if no filename search argument entered
07/16/90 - v4.01 - tab key stops re-ordered to match field order
- entry field gets cursor focus at startup
- entry field labels shortened for VGA
- tab key now stops at "hits" listbox
- greyed-out help (and some non-working stub code)
07/23/90 - v4.10 - improved text search speed roughly 40% by implementing
a variation of the Boyer-Moore string search algorithm.
08/07/90 - v4.11 - text search occasionally missed valid matches; fixed.
09/07/90 - v4.12 - changed internal structures to allow longer filenames.
09/20/90 - v4.13 - added Horizontal scroll bar to "hits" listbox.
Note: required LS_HORZSCROLL in resource file (.RC) AND
a call to WinSetWindowULong (??) to enable
10/01/90 - v4.20 - Drag and Drop support added; See above for usage info.
10/04/90 - v4.21 - PMSEEK no longer converts command strings to upper case.
01/04/91 - v4.30 - Added Search options:
Enable/Disable Subdir Searching
Enable/Disable display of text "hit" data
Enable/Disable text search case sensitivity
------------------------------------------------------------------------
Author: David Slauson (SLAUSON at YKTVMV)